package com.example.cms.service.Impl;

import com.example.cms.dao.OptionsDao;
import com.example.cms.dao.QuestionTitleDao;
import com.example.cms.dao.QuestionnairedDao;
import com.example.cms.entity.Options;
import com.example.cms.entity.Questionnaired;
import com.example.cms.entity.Questionnairefile;
import com.example.cms.pojo.Mesagge;
import com.example.cms.pojo.QueryPage;
import com.example.cms.pojo.QuestionTitleItem;
import com.example.cms.service.QuestionnairedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.expression.Ids;

import java.util.List;


@Service("QuestionnairedService")
@Transactional
public class QuestionnairedServiceImpl implements QuestionnairedService {

    @Autowired
    private QuestionnairedDao questionnairedDao;
    @Autowired
    private OptionsDao optionsDao;
    @Autowired
    private QuestionTitleDao questionTitleDao;

    @Override
    public List<Questionnaired> getAllQues() {
        return questionnairedDao.selectAllQuestion();
    }

    @Override
    public List<Questionnaired> findPage(QueryPage queryPage, Mesagge mesagge) {

        return null;
    }

    @Override
    public List<Questionnaired> findeQuestionNaireId(Integer questionNairedId) {
     List<Questionnaired> list= questionnairedDao.selectQuesById(questionNairedId);
     return list;
    }

    @Override
    public Mesagge deletQuestionNaired(Integer questionNairedid,Mesagge mesagge) {
     questionnairedDao.deleteQuestion(questionNairedid);
    mesagge.setMesCode(1);
    return mesagge;
    }

    /**
     * @Author Sunbird
     * @Description 新增试卷
     * @Date  2018/12/22
     * @Param
     * @return
     **/

    @Override
    public Mesagge insertQuestionNaired(Questionnaired questionnaired, Mesagge mesagge) {
        //给一个标识看上次选项循环执行了多少次
        int count=0;
        //给个标识看题目使用了多少次
        int  title =0;
        //如果试卷题目不为空
        if (questionnaired.getQuestionNairedName()!=""&&questionnaired.getQuestionNairedName()!=null) {
            int i = questionnairedDao.insertQues(questionnaired);
            //如果题目不为空
            if (questionnaired.getQuestionnairefiles().get(0).getQuestionnaireImte() != null
                    && questionnaired.getQuestionnairefiles().get(0).getQuestionnaireImte() != "") {
                //循环题目、按照试卷id 和题目id 新增题目
                //获取刚才新增的题目id
                Questionnaired question = questionnairedDao.selectQuesByName(questionnaired.getQuestionNairedName());
                for (int z = 0; z < questionnaired.getQuestionnairefiles().size(); z++) {
                    //把试卷id赋值给题目
                    questionnaired.getQuestionnairefiles().get(z).setQuestionnaireId(question.getQuestionNairedId());
                    //新增题目
                    questionTitleDao.insertQuesFile(questionnaired.getQuestionnairefiles().get(z));


                    //新增题目选项 如果题目选项不为空
                    try {
                        if (!("").equals(questionnaired.getQuestionnaoreOption())&&questionnaired.getQuestionnaoreOption()!=null) {
                            if (questionnaired.getQuestionnaoreOption().get(0).getOptionsLetter() != null
                                    && questionnaired.getQuestionnaoreOption().get(0).getOptionsLetter() != "") {
                                //如果是选择题 至少有四个选项 根据题目id 和选项名称新增选项
                                //根据不同题目类型获取题目id
                                //如果一个题目对应多个选择
                                //根据刚才的题目名查询
                                Questionnairefile questionfile = questionTitleDao.findByName(questionnaired.getQuestionnairefiles().get(z).getQuestionnaireImte());
                                if (questionnaired.getQuestionnairefiles().get(z).getQuestionnaireState() == 1 || questionnaired.getQuestionnairefiles().get(z).getQuestionnaireState() == 3) {
                                    //循环减去上一次的次数
                                    for (int y = count; y < questionnaired.getQuestionnaoreOption().size(); y++) {
                                        //如果选项小于直接获取题目id
                                        questionnaired.getQuestionnaoreOption().get(y).setQuestionnaireFileId(questionfile.getQuestionnaireFileId());
                                        //判断a出现的次数
                                        int Acount = 0;
                                        if (questionnaired.getQuestionnaoreOption().get(count).getOptionsLetter() == "A") {
                                            Acount++;
                                        }
                                        //如果a 出现两次着不进新增
                                        if (Acount <= 1) {
                                            count += optionsDao.insertOptionsFile(questionnaired.getQuestionnaoreOption().get(y));
                                        } else {
                                            break;
                                        }
                                    }
                                } else {//当题目为回答时
                                    title++;
                                    for (int y = count; y < questionnaired.getQuestionnaoreOption().size(); y++) {
                                        questionnaired.getQuestionnaoreOption().get(y).setQuestionnaireFileId(questionfile.getQuestionnaireFileId());
                                        count += optionsDao.insertOptionsFile(questionnaired.getQuestionnaoreOption().get(y));
                                        break;
                                    }
                                }
                            }
                        }
                    } catch (Exception e) {
                        mesagge.setMesCode(3);
                    }
                }
            }
        }
            mesagge.setMesCode(1);
                return mesagge;
    }

    /**
     * @Author Sunbird
     * @Description
     * @Date  2018/12/20
     * @Param
     * @return
     **/

    @Override
    public List<Questionnaired> selectQuestionName(String QuestionName) {
        return null;
    }

    /**
     * @Author Sunbird
     * @Description 根据新增问卷题目
     * @Date  2018/12/20
     * @Param
     * @return
     **/
    @Override
    public void insertQuestTitle(Questionnaired questionnairefile, Mesagge mesagge) {
            questionnairefile.getQuestionnairefiles().get(0).setQuestionnaireId(questionnairefile.getQuestionNairedId());
            int i= questionTitleDao.insertQuesFile(questionnairefile.getQuestionnairefiles().get(0));
            mesagge.setMesCode(i);
    }
/**
 * @Author Sunbird
 * @Description 根据试卷名删除题目
 * @Date  2018/12/20
 * @Param
 * @return
 **/
    @Override
    public void deletQuestTitle(Integer questionnairedfileId, Mesagge mesagge) {
            questionTitleDao.deleteQuesFile(questionnairedfileId);
            mesagge.setMesCode(1);
    }
/**
 * @Author Sunbird
 * @Description 根据题目id 查询选项
 * @Date  2018/12/20
 * @Param
 * @return
 **/
    @Override
    public List<Options> optionsByQuestionnaireFileId(Integer QuestionnaireFileId) {
        return  optionsDao.findQuestionnaireFileId(QuestionnaireFileId);
    }

    /**
     * @Author Sunbird
     * @Description 删除选项
     * @Date  2018/12/20
     * @Param
     * @return
     **/

    @Override
    public void detleOptions(Mesagge mesagge, Integer Ids) {
          int i=optionsDao.deletOptions(Ids);
          mesagge.setMesCode(i);
    }
    /*
     * @Author Sunbird
     * @Description 修改选项
     * @Date  2018/12/20
     * @Param
     * @return
     **/

    @Override
    public void updataOptions(Mesagge mesagge, QuestionTitleItem options) {

    }

    @Override
    public void insertOptions(Mesagge mesagge, Questionnairefile qptions) {
        int count=0;
        if (qptions.getFileOptions().size()>0) {
            for (int i = 0; i < qptions.getFileOptions().size(); i++) {
                qptions.getFileOptions().get(i).setQuestionnaireFileId(qptions.getQuestionnaireFileId());
                    count=optionsDao.insertOptionsFile(qptions.getFileOptions().get(i));
            }
        }
        mesagge.setMesCode(count);
    }


}
